Issues and ideas:


-- Documenter:
using FinEtoolsDeforNonlinear
using DocumenterTools
Travis.genkeys(user="PetrKryslUCSD", repo="https://github.com/PetrKryslUCSD/FinEtoolsDeforNonlinear.jl")

-- Make all "traction_bcs" refer to force intensity objects.

– cauchyt = Fn1*(S/det(Fn1))*Fn1'; # Cauchy stress
This should be really coded as a special transformation. Available both for
Matrix (tensor) storage and for a vector storage.

– How to make integration-point material update thread safe?
function MatDeforNeohookean(mr::Type{DeforModelRed3D}, mass_density::FFlt, E::FFlt, nu::FFlt)
	_mI = diagm(0=>[1, 1, 1, 0.5, 0.5, 0.5]);
	_m1 = vec(FFlt[1 1 1 0 0 0]) ;
	_m1m1 = _m1*_m1';
	_I3 = [1.0 0 0; 0 1.0 0; 0 0 1.0]
If we create a deep copy of the material, these buffers should be thread safe. Needs to be checked, though. Status 12/19/2019: This has been solved by making these temporary buffers fields in the datatype.


- Estimation of stable time step
# The formula below is strictly speaking only applicable in three
    # dimensions for isotropic materials.  This needs to be generalized at
    # some point.
    speed_of_sound = sqrt(self.material.property.E / (1 - 2*self.material.property.nu) / self.material.property.rho);

- Handling of local material coordinate systems: needs to be checked  in the base FEMM.

- How to avoid reallocation of buffers for the base FEMM? The abstract type cannot store any data
and the needed buffers are reallocated on each call.

- Julia threads do not cooperate with BLAS threads. All the BLAS calls needed to be eliminated from the explicit code in order to obtain good parallel efficiency. BLAS allocates some workspace(s),
and the library protects this with locks in a multi-threading environment. This then leads to a general slowdown of any code that uses BLAS in any form.

- I think some of the specialized linear-algebra code should dispatch on the model reduction type.
Examples: detC(). How to do it is however not quite obvious.
The code for the model reduction type lives in the linear-deformation package, whereas the linear algebra code lives in FinEtools proper.